package asteroids.engine.ai;

import asteroids.engine.GameState;

/**
 * Ships need a pilot... classes implementing this interface can be given to a
 * Ship to command it. Can be used for AI, or user input
 * 
 * @author whitecd1
 * 
 */
public interface Pilot
{
    // bitwise discriminators for orders
    public static final int RIGHT = 1;
    public static final int LEFT = 2;
    public static final int UP = 4;
    public static final int FIRE = 8;
    public static final int SPECIAL = 16;

    /**
     * takes a AsteroidsState object and returns the action for the ship to
     * take.
     * 
     * @return the return value is a bitmap for the actions the ship is to take,
     *         yes/no for: turn left turn right thrusters fire
     */
    public int getOrders(GameState state);
}
